﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace SoulKeeper
{
    /// <summary>
    /// Esta classe serve para evitar a passagem de parâmetros comuns às demais classes. / Graças a isso evitamos métodos como: Update(MouseState mouse, MouseState last_mouse, KeyboardState keyboard, ... )
    /// </summary>
    public static class Engine
    {
        /// <summary>
        /// Aqui ficam todos os controles de Interação de Controle do Usuário
        /// </summary>
        #region ControlsInputs
        public static KeyboardState keyboard, last_keyboard;
        public static MouseState mouse, last_mouse;
        public static GamePadState gamepad, last_gamepad;
        public static Rectangle mouse_pos;
        #endregion

        #region ControlGraphics
        public static GraphicsDeviceManager graphics;
        public static SpriteBatch spriteBatch;
        #endregion

        #region ControlGameBase
        public static GameTime gameTime;
        #endregion

        /// <summary>
        /// Lista de telas que o jogo vai ter.
        /// </summary>
        #region Screens
        public enum GameStates { INTRO, MENU, CREDITS, CONFIG, EXIT, GAME_OVER, THE_END, IN_GAME, PAUSE , INSTRUCTION};
        public enum GameLevels { LEVEL_1, LEVEL_2 };
        public static GameStates current_state;
        public static GameLevels current_level;
        #endregion

        #region Sound
        public static Song song, lastSoung;
        public static bool songPlay;
        #endregion




    }
}
